Cours : Interblocage
Dans un système multiprocessus, l'
ordonnanceur
alloue le processeur à chaque processus selon un algorithme d'
ordonnancement
: la politique choisie conditionne l'ordre d'exécution des processus et très souvent, les exécutions des
processus
s'entrelacent les unes avec les autres. Chaque processus dispose d'un espace d'adressage propre et indépendant, protégé par
rap
port
aux autres processus. Malgré tout, les processus peuvent avoir besoin de communiquer entre eux pour échanger des données par
exemple : ils ne sont donc pas totalement indépendants et effectuent des accès concurrents aux
ressource
s logicielles ou matérielles.
Définition : Ressource
Une ressource désigne toute entité dont a besoin un processus pour s'exécuter. La ressource peut être matérielle comme le
processeur ou en périphérique ou elle peut être logicielle comme une variable. Une ressource est caractérisée :
- Par un état : elle est libre ou occupée
- Par son nombre de points d'accès, c'est-à-dire le nombre de processus pouvant lutiliser en même temps.
Lutilisation d'une ressource par un processus seffectue en trois étapes : lorsque le processus a besoin de la ressource
il s'alloue cette ressource : c'est l'étape d'allocation de ressources. Une fois que le processus a pu obtenir la ressource,
il utilise la ressource durant un certain temps puis il rend la ressource : c'est l'étape de restitution de la ressource.
Les phases d'allocation et de restitution d'une ressources doivent assurer que la ressource est utilisée conformément à son
nombre de points daccès
1 Définitions des situations dinterblocage, de famine et de coalition
Définition : Interblocage
Un ensemble de n processus est dit en situation dinterblocage lorsque l'ensemble de ces n processus attend chacun une ressource
déjà possédée par un autre processus de l'ensemble. Dans une telle situation aucun processus ne peut poursuivre son exécution.
L'attente des processus est infinie.
Considérons un exemple. Soient deux ressources R1 et R2 qui sont toutes les deux à un seul point daccès cest-à-dire que
seul un processus à la fois a le droit dutiliser la ressource. Soient également deux processus P1 et P2. Ils utilisent tous
les deux les ressources R1 et R2 pour effectuer un traitement. Les processus P1 et P2 sont programmés tels que P1 demande
d'abord à s'allouer R1 puis R2 avant de commencer son traitement tandis que le processus P2 demande d'abord à s'allouer la
ressource R2 puis la ressource R1 avant de commencer son traitement. Les deux processus sont prêts à s'exécuter. L'ordonnanceur
choisit d'abord dexécuter P1. P1 demande à prendre la ressource R1 et comme les ressources sont initialement libres, P1 obtient
la ressource R1. Puis lordonnanceur commute et choisit maintenant d'exécuter le processus P2. P2 demande à s'allouer la ressource
R2 et puisque la ressource R2 est libre, P2 obtient la ressource R2. Maintenant P2 continue son exécution et demande à accéder
à la ressource R1. P2 est bloqué puisque R1 a été allouée au processus P1. Puisque P2 est bloqué, l'
ordonnanceur
reprend l'exécution de P1 qui demande pour sa part maintenant à accéder à la ressource R2. Comme R2 a été allouée au
processus
P2, P1 est à son tour bloqué. Les deux processus P1 et P2 sont maintenant en situation d'interblocage : en effet le processus
P1 attend le processus P2 pour disposer de la ressource R2 tandis que le processus P2 attend le processus P1 pour disposer
de la ressource R1.Comme aucun des deux processus ne peut poursuivre son exécution et donc rendre les
ressource
s qu'il possède, le blocage est permanent : on dit que les processus P1 et P2 sont en situation d'interblocage (ou étreinte
fatale).
Définition : Coalition et famine
On parle de coalition de n processus contre p autres processus lorsqu un ensemble de n processus monopolisent des ressources
au détriment des p autres processus. On dit également que les p processus qui ne peuvent pas s'exécuter faute de ressources
sont en situation de famine.
2 Conditions nécessaires à lobtention dun interblocage
Les quatre conditions listées ci-dessus doivent être simultanément vérifiées pour qu'un
interblocage
puisse se produire :
- Occupation et attente : un processus au moins occupant une ressource attend d'acquérir des ressources supplémentaires détenues
par d'autres processus. Les processus demandent les ressources au fur et à mesure de leur exécution.
- Pas de réquisition : les ressources sont libérées sur seule volonté des processus les détenant
- Attente circulaire : il existe un cycle dattente entre au moins deux processus. Les processus impliqués dans ce cycle sont
en interblocage.
La figure 1 donne un exemple dattente circulaire entre deux processus P1 et P2. Les deux processus P1 et P2 utilisent les
trois mêmes ressources : un lecteur de bandes magnétiques, un disque dur et une imprimante. Le processus P1 commence par demander
la bande magnétique puis l'imprimante et enfin le disque avant d'effectuer son traitement. Le processus P2 commence par demander
le disque puis l'imprimante et enfin la bande magnétique avant de commencer son traitement. Sur le schéma de la figure 1,
le processus P1 s'est exécuté et a obtenu la bande magnétique ainsi que l'imprimante. Le processus P2 lui a obtenu le disque
et il demande maintenant à obtenir l'imprimante. L'imprimante a déjà été allouée au processus P1, donc le processus P2 est
bloqué. Le processus P1 ne peut pas poursuivre son exécution car il est en attente du disque qui a déjà été alloué au processus
P2. On a donc une attente circulaire entre P1 et P2 : en effet le processus P2 attend l'imprimante détenue par le processus
P1 tandis que le processus P1 attend le disque détenu par le processus P2. .
 |
Fig 1 : Un exemple dattente circulaire
|
|
3 Les différentes méthodes de traitement des interblocages
Il y a 4 méthodes de traitement des situations d'interblocage : les politiques de guérison, les politiques de prévention ou
d'évitements et la politique de "l'autruche".
3.1 Les politiques de guérison
Une première politique est celle de détection/guérison des interblocages. Dans cette politique on autorise les interblocages
à se produire, on les détecte et on les résout. Pour cette politique, le système maintient un graphe représentant l'allocation
des ressources et les attentes des processus. Dans ce graphe dont un exemple est donné sur la figure 2, on distingue deux
types de sommets : les processus figurés par un rond et les ressources figurées par un rectangle. Une flèche depuis un rectangle
vers un rond indique que la ressource a été allouée au processus. A contrario une flèche depuis un rond vers un rectangle
indique que le processus attend la
ressource
. Un cycle dans le graphe indique la présence d'un interblocage et tous les processus appartenant à ce cycle sont en interblocage.
Ainsi dans la figure 2, le graphe présente deux cycles. Un premier cycle existe entre le processus P1, le processus P2, la
ressource R1 et la ressource R2. Un second cycle existe qui englobe le processus P1, le processus P2, le processus P3 ainsi
que les ressources R1, R3 et R2.
Le système met à jour le graphe à chaque nouvelle allocation de ressources ou demande d'allocation de ressources. Régulièrement
le système parcourt le graphe à la recherche de cycle. Si un cycle est découvert, celui-ci est cassé en avortant les processus
en interblocage appartenant au cycle. Ainsi sur l'exemple de la figure 2, l'
interblocage
est cassé en avortant le processus P2 et en réallouant la ressource R1 au processus P1.
Ce type de politique présente plusieurs difficultés. Sa mise en oeuvre est coûteuse. Il faut maintenir le graphe d'allocation,
régulièrement parcourir le graphe à la recherche de cycles et enfin remédier à l'interblocage par destruction de processus.
Une autre difficulté tient à la période de parcours du graphe : si cette période est petite, le graphe est parcouru souvent
et consomme ainsi les ressources du système inutilement car la probabilité dun interblocage est faible. Si la période de
parcours est grande, le graphe sera parcouru moins souvent et la probabilité de trouver un interblocage sera plus forte. Mais,
le nombre de processus impliqués dans un linterblocage risque dêtre dautant plus grand que la période de parcours du graphe
est grande. Par ailleurs le choix des processus à avorter pour remédier à un interblocage nest pas forcément facile. Une
solution est de systématiquement détruire tous les processus impliqués dans linterblocage mais on peut essayer de raffiner
cette solution en choisissant les processus à avorter : se pose ici le problème du choix qui va conduire à éliminer linterblocage
en minimisant le nombre de
processus
avortés ou le coût pour le système de ces avortements. Ainsi dans le cas de la figure 1, on pourra choisir d'avorter P2 plutôt
que P1 car P1 détient déjà deux ressources sur trois.
 |
Fig 2 : Graphe pour la politique de guérison
|
|
3.2 Les politiques de prévention
Dans les politiques de prévention, on ajoute des contraintes sur l'allocation des ressources afin de faire en sorte qu'au
moins une des 4 conditions nécessaires à l'interblocage ne sera jamais vérifiée. Les deux seules conditions nécessaires sur
lesquelles il est possible d'agir sont la condition d'occupation et d'attente ainsi que la condition d'attente circulaire.
Pour la condition doccupation et dattente, on interdit à un processus de demander les ressources au fur et à mesure de ses
besoins. Un processus ne peut démarrer son exécution que lorsque toutes les ressources ont pu lui être allouées (phase 0).
Ainsi la deuxième condition d'occupation et attente ne peut jamais se produire. Cependant l'utilisation résultante des ressources
est mauvaise puisqu'un processus dispose des ressources durant toute son exécution même s'il n'utilise celles-ci que pour
un très petit temps.
Pour la condition dattente circulaire, une solution est d'imposer un ordre total sur l'ordre d'allocations des différentes
ressources du système : ainsi par exemple l'unité de bande doit toujours être demandée avant le disque et le disque doit lui-même
être toujours demandé avant l'imprimante. Ainsi il ne peut pas se produire d'attente circulaire.
3.3 Les politiques dévitement
La troisième catégorie de solutions est celle des politiques d'évitement : ici, à chaque demande d'allocation de ressource
faite par un processus, le système déroule un algorithme appelé algorithme de sureté qui regarde si cette allocation peut
mener le système en interblocage. Lalgorithme de sureté utilise des informations fournies par les processus notamment pour
chaque processus, leur plus grand besoin possible en ressources. Si tel est le cas, l'allocation est retardée. Cest une vision
pessimiste qui prédomine car lallocation est interdite dès que la possibilité de linterblocage est détectée. Mais cela ne
veut pas dire que cet
interblocage
aura réellement lieu. Un exemple de la mise en uvre de cette politique est lalgorithme appelé algorithme du banquier.
3.4 La politique de lautruche
Une dernière solution, très simple, est de nier l'existence des interblocages et donc de ne rien prévoir pour les traiter.
Simplement la machine est redémarrée lorsque trop de processus sont en interblocage. Les trois premières stratégies évoquées
(prévention, évitement détection/guérison) sont des politiques qui coûtent excessivement chères à mettre en uvre. Aussi,
comme la fréquence des interblocages dans un système est relativement faible, la politique de l'autruche qui paraît dans un
premier abord très "curieuse" se justifie souvent.
Interblocage
Interblocage
|